package cn.iocoder.yudao.module.enterprise.dal.mysql.praxisProject;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.enterprise.controller.admin.praxisProject.vo.*;
import cn.iocoder.yudao.module.enterprise.dal.dataobject.praxisProject.EnterpriseEntryInfoDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 项目报名信息 Mapper
 *
 * @author 管理员
 */
@Mapper
public interface EnterpriseEntryInfoMapper extends BaseMapperX<EnterpriseEntryInfoDO> {

    List<EnterpriseEntryInfoBaseVO> getEntryInfoById(@Param("ids") List<Long> ids);

    void deleteEntryInfoById(@Param("ids") List<Long> ids);

    void deleteEntryStudentByEntryId(@Param("ids") List<Long> ids);

    void deleteEntryStudentByProjectId(@Param("projectId") Long projectId);

    void deleteFeedBackByProjectId(@Param("projectId") Long projectId);

    void updateRateScore(@Param("entryId") Long entryId, @Param("rateScore") BigDecimal rateScore, @Param("updater") String updater);

    void updateCheckStatus( @Param("ids") List<Long> ids,  @Param("updater") String updater, @Param("checkStatus") Integer checkStatus);

    List<EnterpriseEntryInfoPageRespVO> getEntryInfoPage(IPage page, @Param("params") Map<String, Object> params);

    List<EnterpriseEntryStudentPageRespVO> getEntryInfoPageByProjectId(IPage page, @Param("params") Map<String, Object> params);

    List<EnterpriseFeedBackVO> getFeedBackPageByProjectId(IPage page, @Param("params") Map<String, Object> params);

    List<EnterpriseEntryStudentVO> getEntryStudentList(@Param("entryId") Long entryId);

    List<EnterpriseEmailInfoVO> getEntryStudentListByIds(@Param("ids")  List<Long> ids);

    List<EnterpriseEntryStudentPageRespVO> getEntryInfoPageByProjectList(@Param("params") Map<String, Object> params);

    EnterpriseProjectScheduleVO getScheduleByProjectId(@Param("projectId") Long projectId,@Param("scheduleType") Integer scheduleType);

    @TenantIgnore
    Long getScheduleByEntryId(@Param("entryId") Long entryId );

}
